<!DOCTYPE html>
<html>
<!--
Copyright 2009 The Closure Library Authors. All Rights Reserved.

Use of this source code is governed by the Apache License, Version 2.0.
See the COPYING file for details.
-->
<!--
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Closure Unit Tests - goog.ui.ac.RemoteArrayMatcher</title>
<script src="../../base.js"></script>
<script>
  goog.require('goog.events.KeyCodes');
  goog.require('goog.json');
  goog.require('goog.testing.MockControl');
  goog.require('goog.testing.jsunit');
  goog.require('goog.testing.net.XhrIo');
  goog.require('goog.ui.ac.RemoteArrayMatcher');
</script>
</head>
<body>
<script>

  var url = "http://www.google.com";
  var token = "goog";
  var maxMatches = 5;
  var fullToken = "google";

  var responseJsonText = "['eric', 'larry', 'sergey', 'marissa', 'pupius']";
  var responseJson = goog.json.unsafeParse(responseJsonText);

  var mockControl;
  var mockMatchHandler;


  function setUp() {
    goog.net.XhrIo = goog.testing.net.XhrIo;
    mockControl = new goog.testing.MockControl();
    mockMatchHandler = mockControl.createFunctionMock();
  }

  function testRequestMatchingRows_noSimilarTrue() {
    var matcher = new goog.ui.ac.RemoteArrayMatcher(url);
    mockMatchHandler(token, responseJson);
    mockControl.$replayAll();
    matcher.requestMatchingRows(token, maxMatches, mockMatchHandler, fullToken);
    matcher.xhr_.simulateResponse(200, responseJsonText);
    mockControl.$verifyAll();
    mockControl.$resetAll();
  }

  function testRequestMatchingRows_twoCalls() {
    var matcher = new goog.ui.ac.RemoteArrayMatcher(url);

    var dummyMatchHandler = mockControl.createFunctionMock();

    mockMatchHandler(token, responseJson);
    mockControl.$replayAll();

    matcher.requestMatchingRows(token, maxMatches, dummyMatchHandler,
        fullToken);

    matcher.requestMatchingRows(token, maxMatches, mockMatchHandler, fullToken);
    matcher.xhr_.simulateResponse(200, responseJsonText);
    mockControl.$verifyAll();
    mockControl.$resetAll();
  }
</script>
</body>
</html>
